
#include <boost/function_types/is_callable_builtin.hpp>
#include <boost/function_types/function_arity.hpp>
#include <boost/type_traits.hpp>
#include <boost/mpl/assert.hpp>


#include <dbgprint/dbgprint_p1.hpp>
struct config{ typedef dbgprint::tags<> disabled; };
#include <dbgprint/dbgprint_p2.hpp>


struct sc_process_b{};
class sc_process_host
{
  public:
    sc_process_host() {}
    virtual ~sc_process_host() { } // Needed for cast check for sc_module.
    void defunct() {}
    void defunct(sc_process_b*) {}
};
typedef void (sc_process_host::*SC_ENTRY_FUNC)();
typedef void (sc_process_host::*SC_ENTRY_FUNC_P)(sc_process_b*);

struct xyz{
	void operator()(){}
};

void f1(){}
void f2(int){}

int main(int argc,char** argv){
	return 0;
}


BOOST_MPL_ASSERT(( boost::is_convertible<int,double> ));
BOOST_MPL_ASSERT(( boost::is_convertible<int,const int> ));
BOOST_MPL_ASSERT(( boost::is_convertible<const int,int> ));
BOOST_MPL_ASSERT_NOT(( boost::is_convertible<int***,const std::string> ));
BOOST_MPL_ASSERT(( boost::is_convertible<void (*)(),void (sc_process_host::*)()> ));

